// database/migrate.go
package database

import (
	"gorm.io/gorm"

	"go-admin-system/models"
	"go-admin-system/utils"
)

func MigrateModels(db *gorm.DB) {
	// 自动迁移模型
	db.AutoMigrate(
		&models.User{},
		&models.Role{},
		&models.Permission{},
		&models.Menu{},
	)

	// 创建默认管理员角色（使用更安全的方式）
	var adminRole models.Role
	result := db.Where("name = ?", "管理员").Attrs(models.Role{
		Name:        "管理员",
		Description: "系统超级管理员",
		Status:      1,
	}).FirstOrCreate(&adminRole)

	if result.Error != nil {
		panic("创建默认角色失败: " + result.Error.Error())
	}

	// 创建默认管理员账户
	var adminUser models.User
	result = db.Where("username = ?", "admin").Attrs(models.User{
		Username: "admin",
		Password: func() string {
			hashedPassword, err := utils.HashPassword("admin123")
			if err != nil {
				panic("密码哈希失败: " + err.Error())
			}
			return hashedPassword
		}(),
		Email:  "admin@example.com",
		RoleID: adminRole.ID,
		Status: 1,
	}).FirstOrCreate(&adminUser)

	if result.Error != nil {
		panic("创建默认用户失败: " + result.Error.Error())
	}
}
